package cn.tedu._03mybatis.mapper;


import cn.tedu._03mybatis.pojo.entity.Comment;
import cn.tedu._03mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface CommentMapper {
    /**
     * 1. 插入: insertComment, 在评论表中插入1条数据;
     */
   // @Insert("insert into comment(content,created,user_id,weibo_id) values(#{content},#{created},#{userId},#{weiboId})")
    int insertComment(Comment comment);
    /**
     * 2. 删除: deleteById, 根据id删除1条评论;
     */
//    @Delete("delete from comment where id=#{id}")
    int deleteById(int id);
    /**
     * 3. 修改: `updateById` , 根据id修改评论信息;
     */
  //  @Update("UPDATE comment SET content=#{content}, created=#{created}, user_id=#{userId}, weibo_id=#{weiboId} WHERE id=#{id}")
    int updateById(Comment comment);
    /**
     * 4. 查询: selectCommentById1，根据评论的id查询评论的 内容、用户ID、微博ID（数据库表中确认）
     */
//    @Select("SELECT content,user_id userId,weibo_id weiboId FROM comment WHERE id=#{cid}")
    commentVo1 selectCommentById1(int cid);
    /**
     * 5. 查询 selectCommentById2，根据微博的id查询评论的 内容、用户ID（数据库表中确认）
     */
 //   @Select("select content,user_id as userId from comment where weibo_id=#{int wid}")
    List<commentVo2> selectCommentById2(int wid);

    /**
     * 6.动态删除:根据id删除对应的评论信息
     * 方式1: 参数为数组
     *
     */
    int deleteByIds1(Integer[] ids);

    /**
     * 7.动态删除:根据id删除对应的评论信息
     * 方式2: 参数为集合
     */
    int deleteByIds2(List<Integer> ids);

    /**
     * 8.动态修改: 根据评论id修改评论信息
     */
    int dynamicUpdate(Comment comment);

    /**
     * 根据微博ID查询微博的详情信息:微博的Id,微博的内容,发布的时间,用户的昵称
     */
    WeiboVo3 selectWeiboById(int wid);

    /**
     * 查询指定微博的评论信息
     * 显示:用户的昵称,评论的内容,评论时间
     */
    List<WeiboVo4> selectCommentById(int wid);

    /**
     * ResultMap实例
     */
    WeiboResultMapVo1 selectResultMap1(int wid);

    /**
     * 查询指定用户发布的所有微博信息:用户的id,用户的昵称,List<Weibo>微博的全部信息
     */
    WeiboResultMapVo2 selectResutlMap2(int uid);

    /**
     * 查询指定微博的所有评论信息: 微博的id,微博的内容,List<Comment>
     */
    WeiboResultMapVo3 seletResultMap3(int wid);


}
